﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class ListaProdutos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.Page.IsPostBack)
            {
                String id = Request.QueryString["idCategoria"];

                WSDetalheProduto.ServicosService detalheProdutoServices = new WSDetalheProduto.ServicosService();
                WSDetalheProduto.Produto[] listaProdutos = new WSDetalheProduto.Produto[10];
                listaProdutos = detalheProdutoServices.buscaAvancada(Int32.Parse(id), 0);
                detalheProdutoServices.Dispose();

                WSRegistroControleEstoqueProdutos.Service1 estoqueServices = new WSRegistroControleEstoqueProdutos.Service1();

                if (listaProdutos.Length > 0)
                {
                    List<ProdutoInternal> listaProdutosInternal = listaProdutosInternal = new List<ProdutoInternal>();
                    for (int i = 0; i < listaProdutos.Length; i++)
                    {
                        ProdutoInternal prod = new ProdutoInternal();
                    
                        prod.Categoria_nome = listaProdutos[i].categoria_nome;
                        prod.Nome = listaProdutos[i].nome;
                        if (listaProdutos[i].id.HasValue)
                        {
                            prod.Preco = estoqueServices.ReturnProductInfo(listaProdutos[i].id.Value).Price;
                            prod.Id = listaProdutos[i].id.Value;
                        }

                        if (listaProdutos[i].especificacao.Length > 500)
                            prod.Especificacao = listaProdutos[i].especificacao.Substring(0, 500) + "...";

                        listaProdutosInternal.Add(prod);
                        WSDetalheProduto.Imagem[] listaImg = detalheProdutoServices.imagensProduto(prod.Id);
                        if (listaImg.Length > 0)
                        {
                            prod.Imagem = listaImg[0].url;
                        }
                    }

                    MyDataList.DataSource = listaProdutosInternal;
                    MyDataList.DataBind();

                    Session.Add("listaProdutosInternal", listaProdutosInternal);
                }

                estoqueServices.Dispose();
            }
        }

        private class ProdutoInternal
        {
            double preco;

            public double Preco
            {
                get { return preco; }
                set { preco = value; }
            }
            string nome;

            public string Nome
            {
                get { return nome; }
                set { nome = value; }
            }
            string imagem;

            public string Imagem
            {
                get { return imagem; }
                set { imagem = value; }
            }
            string categoria_nome;

            public string Categoria_nome
            {
                get { return categoria_nome; }
                set { categoria_nome = value; }
            }
            string especificacao;

            public string Especificacao
            {
                get { return especificacao; }
                set { especificacao = value; }
            }

            int id;

            public int Id
            {
                get { return id; }
                set { id = value; }
            }
        }

        protected void XXX_Click(object sender, EventArgs e)
        {
            LinkButton botaoClicado = (LinkButton)sender;
            Session.Add("descricaoProduto", ((List<ProdutoInternal>)Session["listaProdutosInternal"]).SingleOrDefault(item => item.Id == Int32.Parse(botaoClicado.CommandArgument)).Especificacao);
            Session.Remove("listaProdutosInternal");
            Response.Redirect("~/DetalheProduto.aspx?idProduto=" + botaoClicado.CommandArgument);
        }

        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/ListaCategorias.aspx");
        }
    }
}